//
//  ChivoxTask.m
//  ChivoxEngine
//
//  Created by John on 2018/8/24.
//  Copyright © 2018年 Chivox. All rights reserved.
//

#import "ChivoxTask.h"

@interface ChivoxTask()
@property (nonatomic, strong) NSMutableArray * _msgQue;
@end

@implementation ChivoxTask

- (id)init {
    if (self = [super init]) {
        self._msgQue = [[NSMutableArray alloc] init];
    }
    return self;
}

- (ChivoxTaskMsg *)topMsg {
    @synchronized(self) {
        return [self._msgQue objectAtIndex:0]; // TODO: test index over
        return NULL;
    }
}

- (void) appendMsg:(ChivoxTaskMsg *)msg { 
    @synchronized(self) {
        long count = (long)self._msgQue.count;
        long i = count -1;
        
        while (i >= 0) {
            ChivoxTaskMsg *iMsg = (ChivoxTaskMsg *)[self._msgQue objectAtIndex:i];
            if (iMsg && [iMsg getPriority] < [msg getPriority]) {
                i--;
                continue;
            }
            break;
        }
        
        i = i+1;
        [self._msgQue insertObject:msg atIndex:i]; // TODO: test insert to end
    }
}

- (void)removeMsg:(ChivoxTaskMsg *)msg {
    @synchronized(self) {
        [self._msgQue removeObject:msg];
    }
}

- (void)clearAllMsg {
    @synchronized(self) {
        [self._msgQue removeAllObjects];
    }
}

@end
